package Introspection;

import java.beans.PropertyDescriptor;
import java.lang.reflect.Method;

/**
 * @Author czl
 * @Date 2024-03-28
 */
public class MainTest {
    public static void main(String[] args) throws Exception {

        // 第一：实例化对象
        Persson persson = Persson.class.getConstructor().newInstance();

        // 第二：创建 JavaBean 对象的属性描述器对象 - 哪个 JavaBean ，哪个属性
        // new PropertyDescriptor("属性名称",JavaBean的Class对象)
        PropertyDescriptor name = new PropertyDescriptor("name", Persson.class);
        PropertyDescriptor age = new PropertyDescriptor("age", Persson.class);

        // 第三：获取 setter 方法
        Method nameWriteMethod = name.getWriteMethod();
        Method agewriteMethod = age.getWriteMethod();

        // 第四：调用 setter 方法 ，初始化数据
        nameWriteMethod.invoke(persson,"傻椿");
        agewriteMethod.invoke(persson,38);

        // 第三：获取 getter 方法
        Method namereadMethod = name.getReadMethod();
        Method agereadMethod = age.getReadMethod();

        // 第六：调用 getter 方法 ，获取属性值
        Object obj = namereadMethod.invoke(persson);
        Object invoke = agereadMethod.invoke(persson);

        System.out.println("姓名：" + obj);
        System.out.println("年龄：" + invoke);

    }
}
